// package语句：声明当前类所在的包
// com.itheima.constructor表示这是一个构造方法演示相关的包
package com.itheima.constructor;

// public是访问修饰符，表示这个类可以被任何地方访问
// class关键字用于定义一个类
// Student是类名，表示学生类，用于演示Java中的构造方法
public class Student {
    // 定义成员变量name，类型为String，表示学生姓名
    String name;
    // 定义成员变量age，类型为int，表示学生年龄
    int age;
    // 定义成员变量sex，类型为char，表示学生性别
    char sex;
    
    // 注释：什么是构造器（构造方法）
    // 构造器是一种特殊的方法，用于创建对象时初始化对象
    // 特点：1. 不能写返回值类型 2. 方法名必须与类名完全相同
    // 无参数构造器：没有参数的构造方法
    public Student(){
        // 打印一条信息，证明构造器被调用了
        // 构造器会在使用new关键字创建对象时自动执行
        System.out.println("=====无参数构造器执行了=======");
    }

    // 注释：有参数构造器
    // 有参数构造器可以在创建对象时直接给成员变量赋值
    // 这里定义了一个接收String类型参数的构造器
    public Student(String n){
        // 打印一条信息，证明这个带String参数的构造器被调用了
        System.out.println("=====有参数String n构造器执行了=======");
        // 注意：这里虽然接收了参数，但没有给成员变量赋值
    }

    // 定义一个接收三个参数的构造器
    // 参数分别是：name(姓名)、age(年龄)、sex(性别)
    public Student(String name, int age, char sex){
        // this关键字：引用当前对象的成员变量
        // this.name = name：将传入的name参数值赋给当前对象的name成员变量
        this.name = name;
        // this.age = age：将传入的age参数值赋给当前对象的age成员变量
        this.age = age;
        // this.sex = sex：将传入的sex参数值赋给当前对象的sex成员变量
        this.sex = sex;
    }
}
